package com.maben.vue_support.util;

import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.crypto.symmetric.AES;
import com.maben.vue_support.constant.CommonConstant;

public class AesUtil {
    /**
     * aes加密 key
     */
    private static final String AES_KEY = CommonConstant.AES_KEY;
    /**
     * aes加密 iv
     */
    private static final String AES_IV = CommonConstant.AES_IV;


    /**
     * 加密内容
     * 返回base64字符串
     */
    public static String encryptToBase64(String content) {
        // 构建
        final AES  aes = new AES("CBC", "PKCS7Padding",
                // 密钥，可以自定义
                AES_KEY.getBytes(),
                // iv加盐，按照实际需求添加
                AES_IV.getBytes());
        //加密
        byte[] encrypt = aes.encrypt(content);
        return Base64Encoder.encode(encrypt);
    }

    /**
     * 解密内容
     * 返回字符串
     */
    public static String decrypt(byte[] encrypt) {
        final AES  aes = new AES("CBC", "PKCS7Padding",
                // 密钥，可以自定义
                AES_KEY.getBytes(),
                // iv加盐，按照实际需求添加
                AES_IV.getBytes());
        //解密为字符串
        return aes.decryptStr(encrypt, CharsetUtil.CHARSET_UTF_8);
    }

    /**
     * 解密内容
     * 返回字符串
     */
    public static String decryptFromBase64(String base63Str) {
        final byte[] encrypt = Base64Decoder.decode(base63Str);
        //解密为字符串
        return decrypt(encrypt);
    }
}
